package com.share.device.constants;

/**
 * 工单常量类
 * 
 * @author         
 * @date 2025-06-29
 */
public class WorkOrderConstants
{
    /** 工单类型 - 维修 */
    public static final String ORDER_TYPE_REPAIR = "repair";
    
    /** 工单类型 - 维护 */
    public static final String ORDER_TYPE_MAINTAIN = "maintain";
    
    /** 工单类型 - 检查 */
    public static final String ORDER_TYPE_INSPECT = "inspect";
    
    /** 工单类型 - 补充 */
    public static final String ORDER_TYPE_REFILL = "refill";
    
    /** 优先级 - 低 */
    public static final String PRIORITY_LOW = "low";
    
    /** 优先级 - 中 */
    public static final String PRIORITY_MEDIUM = "medium";
    
    /** 优先级 - 高 */
    public static final String PRIORITY_HIGH = "high";
    
    /** 优先级 - 紧急 */
    public static final String PRIORITY_URGENT = "urgent";
    
    /** 状态 - 待处理 */
    public static final String STATUS_PENDING = "pending";
    
    /** 状态 - 处理中 */
    public static final String STATUS_PROCESSING = "processing";
    
    /** 状态 - 已完成 */
    public static final String STATUS_COMPLETED = "completed";
    
    /** 状态 - 已关闭 */
    public static final String STATUS_CLOSED = "closed";
    
    /** 默认超时时间（小时） */
    public static final int DEFAULT_TIMEOUT_HOURS = 24;
    
    /** 紧急工单超时时间（小时） */
    public static final int URGENT_TIMEOUT_HOURS = 4;
    
    /** 高优先级工单超时时间（小时） */
    public static final int HIGH_PRIORITY_TIMEOUT_HOURS = 8;
    
    /** 中优先级工单超时时间（小时） */
    public static final int MEDIUM_PRIORITY_TIMEOUT_HOURS = 24;
    
    /** 低优先级工单超时时间（小时） */
    public static final int LOW_PRIORITY_TIMEOUT_HOURS = 48;
    
    /**
     * 根据优先级获取超时时间
     * 
     * @param priority 优先级
     * @return 超时时间（小时）
     */
    public static int getTimeoutHours(String priority) {
        switch (priority) {
            case PRIORITY_URGENT:
                return URGENT_TIMEOUT_HOURS;
            case PRIORITY_HIGH:
                return HIGH_PRIORITY_TIMEOUT_HOURS;
            case PRIORITY_MEDIUM:
                return MEDIUM_PRIORITY_TIMEOUT_HOURS;
            case PRIORITY_LOW:
                return LOW_PRIORITY_TIMEOUT_HOURS;
            default:
                return DEFAULT_TIMEOUT_HOURS;
        }
    }
    
    /**
     * 判断是否为已完成状态
     * 
     * @param status 状态
     * @return 是否已完成
     */
    public static boolean isCompleted(String status) {
        return STATUS_COMPLETED.equals(status) || STATUS_CLOSED.equals(status);
    }
    
    /**
     * 判断是否为待处理状态
     * 
     * @param status 状态
     * @return 是否待处理
     */
    public static boolean isPending(String status) {
        return STATUS_PENDING.equals(status);
    }
    
    /**
     * 判断是否为处理中状态
     * 
     * @param status 状态
     * @return 是否处理中
     */
    public static boolean isProcessing(String status) {
        return STATUS_PROCESSING.equals(status);
    }
} 